﻿<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
                xmlns:sp="http://schemas.microsoft.com/sharepoint/"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                exclude-result-prefixes="msxsl sp"
                extension-element-prefixes="sp">

  <xsl:output method="xml" indent="yes"/>

  <!--
  ========================================================================================
  Template [Elements]
  ========================================================================================
  -->
  <xsl:template match="sp:Elements">

    <xsl:param name="featureFolder"/>
    <xsl:param name="elementFolder"/>

    <Elements folder="{$elementFolder}">
      <Fields>
        <xsl:apply-templates select="sp:Field"/>
      </Fields>
      <ContentTypes>
        <xsl:apply-templates select="sp:ContentType"/>
      </ContentTypes>
      <ListTemplates>
        <xsl:apply-templates select="sp:ListTemplate"/>
      </ListTemplates>
      <ListInstances>
        <xsl:apply-templates select="sp:ListInstance"/>
      </ListInstances>
      <ContentTypeBinding>
        <xsl:apply-templates select="sp:ContentTypeBinding"/>
      </ContentTypeBinding>
      <Receivers>
        <xsl:copy-of select="@ListUrl"/>
        <xsl:copy-of select="@Scope"/>
        <xsl:apply-templates select="sp:Receivers/sp:Receiver"/>
      </Receivers>
    </Elements>
  </xsl:template>

  <!--
  ========================================================================================
  Template [Field]
  ========================================================================================
  -->
  <xsl:template match="sp:Field">
    <Field>
      <xsl:copy-of select="@ID"/>
      <xsl:copy-of select="@Type"/>
      <xsl:copy-of select="@Name"/>
    </Field>
  </xsl:template>

  <!--
  ========================================================================================
  Template [ContentType]
  ========================================================================================
  -->
  <xsl:template match="sp:ContentType">
    <ContentType>
      <xsl:copy-of select="@ID"/>
      <xsl:copy-of select="@Name"/>
      <xsl:copy-of select="@Group"/>
      <xsl:apply-templates select="sp:FieldRefs" mode="copy-no-namespaces"/>
      <!--<xsl:copy-of select="sp:FieldRefs"/>-->
    </ContentType>
  </xsl:template>

  <!--
  ========================================================================================
  Template [Receiver]
  ========================================================================================
  -->
  <xsl:template match="sp:Receiver">
    <Receiver>
      <xsl:attribute name="Name">
        <xsl:value-of select="sp:Name/text()"/>
      </xsl:attribute>
      <xsl:attribute name="Type">
        <xsl:value-of select="sp:Type/text()"/>
      </xsl:attribute>
      <xsl:attribute name="Class">
        <xsl:value-of select="sp:Class/text()"/>
      </xsl:attribute>
      <xsl:attribute name="SequenceNumber">
        <xsl:value-of select="sp:SequenceNumber/text()"/>
      </xsl:attribute>
    </Receiver>
  </xsl:template>

  <!--
  ========================================================================================
  Template [List]
  ========================================================================================
  -->
  <xsl:template match="sp:List">
    <List>
      <xsl:copy-of select="@Type"/>
      <xsl:copy-of select="@Url"/>
      <xsl:copy-of select="@Title"/>

      <ContentTypeRefs>
        <xsl:apply-templates select="sp:ContentTypes/sp:ContentTypeRef" mode="copy-no-namespaces"/>
      </ContentTypeRefs>
      <Fields>
        <xsl:apply-templates select="sp:MetaData/sp:Fields/sp:Field"/>
      </Fields>
      <Views>
        <xsl:apply-templates select="sp:MetaData/sp:Views/sp:View"/>
      </Views>
      <ContentTypes>
        <xsl:apply-templates select="sp:ContentTypes/sp:ContentType"/>
      </ContentTypes>
      
    </List>
  </xsl:template>

  <!--
  ========================================================================================
  Template [ListTemplate]
  ========================================================================================
  -->
  <xsl:template match="sp:ListTemplate">
    <ListTemplate>
      <xsl:copy-of select="@Type"/>
      <xsl:copy-of select="@Name"/>
      <xsl:copy-of select="@DisplayName"/>
    </ListTemplate>
  </xsl:template>

  <!--
  ========================================================================================
  Template [ListInstance]
  ========================================================================================
  -->
  <xsl:template match="sp:ListInstance">
    <xsl:apply-templates select="." mode="copy-no-namespaces"/>
    <!--<xsl:copy-of select="."/>-->
  </xsl:template>

  <!--
  ========================================================================================
  Template [ContentTypeBinding]
  ========================================================================================
  -->
  <xsl:template match="sp:ContentTypeBinding">
    <xsl:apply-templates select="." mode="copy-no-namespaces"/>
    <!--<xsl:copy-of select="."/>-->
  </xsl:template>
  
  <!--
  ========================================================================================
  Template [View]
  ========================================================================================
  -->
  <xsl:template match="sp:View">
    <xsl:apply-templates select="." mode="copy-no-namespaces"/>
    <!--<xsl:copy-of select="."/>-->
  </xsl:template>
</xsl:stylesheet>
